using Didsoft.DUA.AccesoDatos.Entidades;
using System;
using System.ComponentModel.DataAnnotations;
using System.Collections.Generic;

namespace SIOGDE.AccesoDatos.Entidades
{
 public partial class UnidadMilitar
 {
     public UnidadMilitar()
     {
         Guid = System.Guid.NewGuid().ToString();
     }
     #region foreign Keys

     public virtual int CategoriaUnidadId_FK {get;set;}
     private CategoriaUnidad CategoriaUnidadId_obj ;
     public virtual CategoriaUnidad CategoriaUnidad
      {
          get { return CategoriaUnidadId_obj; }
          set {
                CategoriaUnidadId_obj = value;
                if (CategoriaUnidadId_obj != null) CategoriaUnidadId_FK = CategoriaUnidadId_obj.Id; 
          }
      }

     public virtual int RegionId_FK {get;set;}
     private DUA_Region RegionId_obj ;
     public virtual DUA_Region Region
      {
          get { return RegionId_obj; }
          set {
                RegionId_obj = value;
                if (RegionId_obj != null) RegionId_FK = RegionId_obj.Id; 
          }
      }

     public virtual int FuerzaId_FK {get;set;}
     private Fuerza FuerzaId_obj ;
     public virtual Fuerza Fuerza
      {
          get { return FuerzaId_obj; }
          set {
                FuerzaId_obj = value;
                if (FuerzaId_obj != null) FuerzaId_FK = FuerzaId_obj.Id; 
          }
      }

     public virtual int TipoUnidadId_FK {get;set;}
     private TipoUnidad TipoUnidadId_obj ;
     public virtual TipoUnidad TipoUnidad
      {
          get { return TipoUnidadId_obj; }
          set {
                TipoUnidadId_obj = value;
                if (TipoUnidadId_obj != null) TipoUnidadId_FK = TipoUnidadId_obj.Id; 
          }
      }

     public virtual int UnidadPadreId_FK {get;set;}
     private UnidadMilitar UnidadPadreId_obj ;
     public virtual UnidadMilitar UnidadPadre
      {
          get { return UnidadPadreId_obj; }
          set {
                UnidadPadreId_obj = value;
                if (UnidadPadreId_obj != null) UnidadPadreId_FK = UnidadPadreId_obj.Id; 
          }
      }
     #endregion
     public virtual int   Id { get; set;}

     
     [StringLength(50, ErrorMessage = "{0} debe tener al menos {2} caracteres.", MinimumLength = 2)]
     [Display(Name = "Guid")]
     public virtual string   Guid { get; set;}

     [Required(ErrorMessage="Codigo es requerido.")]
     [StringLength(50, ErrorMessage = "{0} debe tener al menos {2} caracteres.", MinimumLength = 2)]
     [Display(Name = "Codigo")]
     public virtual string   Codigo { get; set;}

     [Required(ErrorMessage="Nombre es requerido.")]
     [StringLength(50, ErrorMessage = "{0} debe tener al menos {2} caracteres.", MinimumLength = 2)]
     [Display(Name = "Nombre")]
     public virtual string   Nombre { get; set;}

     [StringLength(100, ErrorMessage = "{0} debe tener al menos {2} caracteres.", MinimumLength = 2)]
     [Display(Name = "NombreLegal")]
     public virtual string   NombreLegal { get; set;}

     [Required(ErrorMessage="Direccion es requerido.")]
     [StringLength(100, ErrorMessage = "{0} debe tener al menos {2} caracteres.", MinimumLength = 2)]
     [Display(Name = "Direccion")]
     public virtual string   Direccion { get; set;}

     [StringLength(100, ErrorMessage = "{0} debe tener al menos {2} caracteres.", MinimumLength = 2)]
     [Display(Name = "Telefonos")]
     public virtual string   Telefonos { get; set;}

     [StringLength(100, ErrorMessage = "{0} debe tener al menos {2} caracteres.", MinimumLength = 2)]
     [Display(Name = "Email")]
     public virtual string   Email { get; set;}

     [StringLength(100, ErrorMessage = "{0} debe tener al menos {2} caracteres.", MinimumLength = 2)]
     [Display(Name = "Descripcion")]
     public virtual string   Descripcion { get; set;}

     [Display(Name = "Latitud")]
     public virtual float?   Latitud { get; set;}

     [Display(Name = "Longitud")]
     public virtual float?   Longitud { get; set;}

     [Required(ErrorMessage="AceptaEntradas es requerido.")]
     [Display(Name = "AceptaEntradas")]
     public virtual bool   AceptaEntradas { get; set;}


     public virtual bool TieneDependientes { get; set; }
     //duda : sera bueno mapearlo???
     public IList<UnidadMilitar> Dependientes { get; set; }
 }
}

